package com.campus.app.service;

import com.campus.commons.entity.Course;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.commons.utils.MyPage;
import com.campus.commons.utils.Result;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程表 服务类
 * </p>
 *
 * @author Rin
 * @since 2020-12-24
 */
public interface CoursesService  extends IService<Course>  {
    /**
     * 获取班级本周的课表；
     * @param classId 班级Id
     * @return
     */
    Result<List<Course>> getCourseByClassId(Integer classId);

    /**
     * 返回今天上午||下午的课表；
     * @return
     */
    Result<List<Course>> getNowCourse();

    /**
     * 获取这个老师本周课程；
     * @param teacherId  老师Id
     * @return
     */
    Result<List<Course>> getCourseByTeacherId(Integer teacherId);

    /**
     * 获取多个班级的课表
     * @param classId
     * @return
     */
    Result<Map<Integer,List<Course>>> getCoursesByClassId(Integer... classId);
    /**
     * 查询所有课表-分页
     *
     * @param myPage 分页对象
     * @return 工具
     */
    Result<List<Course>> getCourse(MyPage myPage);

    /**
     * 复合查询（日期，班级编号）
     * @param myPage 分页对象名
     * @param start 开始时间
     * @param end 结束时间
     * @param classId 班级编号
     * @return 工具
     */
    Result<List<Course>> getCourseBy(MyPage myPage, String start, String end,Integer classId);

    /**
     * 添加一条课程记录
     * @param course 课程对象
     * @return 工具
     */
    Result addCourse(@NotNull Course course);

    /**
     * 批量添加课程记录
     * @param courses
     * @return
     */
    Result addCourses(@NotNull List<Course> courses);

    /**
     * 传入文件流和文件名；进行插入
     * 批量添加课程记录
     * @return
     */
    Result addCourses(InputStream upFile,String fileName);

    /**
     * 修改一条课程记录
     *
     * @param course 课程对象
     * @return 工具
     */
    Result upCourse(@NotNull  Course course);

    /**
     * 根据id删除一条或多条数据
     *
     * @param id 课程编号
     * @return 工具
     */
    Result delCourse(@Min(1) List<Integer> id);


}
